package com.zhiwen.base;

import org.apache.activemq.ActiveMQConnectionFactory;

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.Session;
import javax.jms.TextMessage;

/**
 * @Auther: wuzhiwen
 * @Date: 2019/2/12 12:41
 * @Description:
 */
public class ConsumerMessage {

    /**
     * 消费消息
     */
    public static void consumeMessage() throws JMSException {
        //1、创建 ActiveMQ 连接，设置 brokerURL
        ConnectionFactory connectionFactory =
                new ActiveMQConnectionFactory("tcp://192.168.91.129:61617");

        //2、创建 JMS 连接
        Connection connection = connectionFactory.createConnection();

        //3、启动连接（这里需要手动启动）
        connection.start();

        //4、创建会话 Session（参数一 transacted：是否是事务  参数二：自动确认）
        Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

        /**
         * 5、创建消息目的:
         * 第一种 Queue：点对点消息
         * 第二种 Topic：广播式消息
         */
        Destination destination = session.createQueue("test");

        //6、创建消费者
        MessageConsumer consumer = session.createConsumer(destination);

        //7、获取消息
        Message message = consumer.receive(100);

        if (message instanceof TextMessage) {
            TextMessage textMessage = (TextMessage) message;
            System.out.println("----------------------------------");
            System.out.println("消费消息：" + textMessage.getText());
        }

        //8、关闭消息发送者、Session、Connection
        consumer.close();
        session.close();
        connection.close();
    }

}
